Instrucciones

Este taller es para ser realizado en parejas. Se deben subir dos archivos a Intú: un PDF con las respuestas argumentadas y el archivo respectivo del código empleado para la actividad en R.

Consejo: Escriba todo código en un script (Panel A (ver sección 3.2 del libro) y luego ejecútelo con el botón Run, presionando al mismo tiempo Ctrl + ENTER en Windows o Command + RETURN en MacOS para enviar el código del script a la consola.

Encontrarán un foro para las dudas que tengan sobre el código o los datos, pero no sobre los resultados de este taller.

Las participaciones que se hagan en el foro tendrán bonificación para la nota de este taller. La bonificación se otorgarán por realizar:

  • Preguntas pertinentes, relevantes y no repetidas o
  • Respuestas claras y correctas a las dudas de los compañeros (y no repetidas)

La bonificación irá de 0 a 1.0 puntos.

Contexto

El equipo de analítica de un club de fútbol está apoyando al cuerpo técnico en la búsqueda de un nuevo delantero para la próxima temporada. Para facilitar el proceso de selección, se ha decidido analizar a los delanteros disponibles en el mercado y perfilar sus características. El objetivo es segmentar a estos delanteros en grupos basados en sus habilidades y estadísticas, lo que permitirá identificar patrones y características clave que el club puede considerar al tomar su decisión.

Los datos disponibles son tomados de la página del juego de EAsports FC24 y disponibilizados en: https://www.kaggle.com/datasets/stefanoleone992/ea-sports-fc-24-complete-player-dataset?select=male_players.csv

Pregunta 1. (Valor de este punto 2.5)

Utiliza el algoritmo K-Means en R para segmentar a los delanteros en función de sus estadísticas. Evalúa diferentes números de clusters (desde 3 hasta 6) y selecciona el número óptimo utilizando los criterios vistos en la lectura. Asegúrate de justificar tu elección del número de clusters.

library(factoextra)
library(NbClust)
library(cluster)
# Primero se carga la base de datos
load("base_delanteros.RData")

## se estandarizan
datos <- na.omit(base_delanteros[, -c(1, 2)])
datos2 <- as.data.frame(scale(datos))

set.seed(12345)
res_kmeans <- NbClust(datos2, distance = "euclidean", min.nc = 3,
max.nc = 6, method = "kmeans", index = "all")

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 9 proposed 3 as the best number of clusters 
## * 8 proposed 4 as the best number of clusters 
## * 2 proposed 5 as the best number of clusters 
## * 4 proposed 6 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  3 
##  
##  
## *******************************************************************
## Among all indices: 
## ===================
## * 2 proposed  0 as the best number of clusters
## * 1 proposed  2 as the best number of clusters
## * 9 proposed  3 as the best number of clusters
## * 8 proposed  4 as the best number of clusters
## * 2 proposed  5 as the best number of clusters
## * 4 proposed  6 as the best number of clusters
## 
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is  3 .

Tanto los criterios como la silueta indican que el mejor número es 3. Aunque en la silueta más alta es 2, recordemos que nos pidieron evaluar entre 3 y 6.

Pregunta 2 (Valor de este punto 2.5)

Una vez identificados los clusters óptimos, realiza una caracterización detallada de los grupos. Utiliza gráficos y estadísticas descriptivas para describir las características clave de cada cluster. ¿Qué diferencias observas entre los grupos de delanteros?

### le pegamos el cluster a nuestra base de datos sin estandarizar
datos$cluster = res_kmeans$Best.partition

A continuación, se presenta un ejemplo de los posibles gráficos y tablas:

library(ggplot2)
library(dplyr)
library(plotly)


(ggplot(datos, aes(x = as.factor(cluster), y = age)) + geom_boxplot(fill = "skyblue") +
    labs(x = "Cluster", y = "Age", title = "Distribución de la edad por clúster") + theme_minimal()) %>% ggplotly()

Estadísticos para la variable Potencial:

datos %>% group_by(cluster) %>% summarise(Media = mean(potential), Mediana = median(potential), Cuartil3 = quantile(potential, probs = 0.75))
## # A tibble: 3 x 4
##   cluster Media Mediana Cuartil3
##     <int> <dbl>   <dbl>    <dbl>
## 1       1  69.0      69       72
## 2       2  79.8      79       83
## 3       3  70.8      71       75

Developed by: Cristian Hoyos.

® Cienfi 2024.